Лекция №2: «Unified Modelling Language» #UML: Назначение -Анализ требований -Проектирование -Документирование #UML: Особенности -Язык графического описания -Стандартные диаграммы -Стандартный способ отображения элементов #Типы диаграмм -Структурные диаграммы -Диаграммы поведения -Диаграммы взаимодействия #Структурные диаграммы -Диаграмма классов -Диаграмма компонентов -Диаграмма композитной структуры -Диаграмма развертывания -Диаграмма объектов -Диаграмма пакетов #Диаграммы поведения -Диаграмма деятельности -Диаграмма состояний -Диаграмма вариантов использования #Диаграммы взаимодействия -Диаграмма кооперации -Диаграмма последовательности #UML: преимущества -Объектно-ориентирован -Стандартное разностороннее описание системы -Простые для понимания диаграммы -Динамично развивается -Интеграция в RAD-системы #UML: Способы построения -Визуальные --Rational Rose --MS Visio --Umbrello -WYSIWYM --WebSequenceDiagrams.com --PlantUML #MS Visio #Визуальные: Преимущества -Наглядное построение -Полный контроль над отображением -Интеграция с кодом (опционально) #Визуальные: Недостатки -Трудоемкое поддержание в актуальном состоянии -Сложно отслеживать изменения -Сложно организовать коллективную работу -Пропириетарные форматы файлов #PlantUML -WYSIWYM -Текстовое описание элементов UML-диаграмм -Открытые инструменты разработки и генерации диаграмм #PlantUML: Диаграмма последовательности ~~~ @startuml Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another request Alice <-- Bob: Another response @enduml PlantUML: Диаграмма последовательности @startuml Bob ->x Alice Bob -> Alice Bob ->> Alice Bob -\ Alice Bob \\- Alice Bob //-- Alice Bob ->o Alice Bob o\\-- Alice Bob <-> Alice Bob <->o Alice @enduml ~~~ #PlantUML: Диаграмма использования ~~~ @startuml (Start) as Start (Use the application) as Using User -> Start User --> Using : A small label :Main Admin: ---> Using : This is\nyet another\nlabel @enduml PlantUML: Диаграмма классов @startuml interface Product { + setName(String name) + getName() } class ConcreteProduct { - String name + setName(String name) + getName() } abstract class Creator { + Product factoryMethod() } class ConcreteCreator { + Product factoryMethod() } Product <|- ConcreteProduct Creator <|- ConcreteCreator ConcreteProduct <.. ConcreteCreator @enduml PlantUML: Диаграмма деятельности @startuml start :Прослушать лекции; :Выполнить лабораторные работы; repeat :Подготовиться к экзамену; if (Есть допуск?) then :Прийти на экзамен; endif repeat while (Как экзамен?) is (:() stop @enduml PlantUML: Диаграмма компонентов @startuml package "Some Group" { HTTP - [First Component] [Another Component] } node "Other Groups" { FTP - [Second Component] [First Component] --> FTP } cloud { [Example 1] } database "MySql" { folder "This is my folder" { [Folder 3] } frame "Foo" { [Frame 4] } } [Another Component] --> [Example 1] [Example 1] --> [Folder 3] [Folder 3] --> [Frame 4] PlantUML: Диаграмма состояний @startuml [*] --> NotShooting state "Not Shooting State" as NotShooting { state "Idle mode" as Idle state "Configuring mode" as Configuring [*] --> Idle Idle --> Configuring : EvConfig Configuring --> Idle : EvConfig } note right of NotShooting : This is a\nnote on a composite state @enduml PlantUML: Диаграмма развертывания @startuml node "<>\nWeb Server" as WebServer { artifact Website } node "<>\n:DB Server" as DbServer { artifact "MySQL DB" } node "<>\n:User Client" as UserClient { node "<>\nBrowser" { artifact "HTML 5" } } WebServer –- DbServer WebServer -- UserClient : http:80 @enduml PlantUML: Диаграмма объектов @startuml object User { id = 123 name = "John Doe" } object AuthToken { salt = "w34a290sdfh2i8dsf" secret = "2237w3bed023usdf799" } User "1" o-- "1" AuthToken @enduml ~~~ #Что использовать? -«Серебрянной пули» нет -Отталкивайтесь от ваших потребностей